<?php
/*
 * description：
 * author：wh
 * email：
 * createTime：{2024/2/19} {11:33} 
 */

namespace wanghua\general_utility_tools_php\tool;


/**
 * 依赖库：doing/phpqrcode
 *
 * composer require doing/phpqrcode dev-master
 *
 * Class Qrcode
 * @package wanghua\general_utility_tools_php\tool
 */
class Qrcode
{
    public $size = 2;
    /**
     * @deprecated 废弃
     *
     * 生成带logo的二维码
     * author：wh
     * doc: https://packagist.org/packages/doing/phpqrcode
     * @param string $str 二维码的内容
     * @param string $qr_file_name 用户username作为图片名称
     * @param string $logo 真实物理路径 必须
     * @throws \Exception
     */
    function createQrcode(string $str,string $qr_file_name, string $logo=''){

        $out_path = 'uploads/qr_images/';
        if(!file_exists($out_path)){
            mkdir($out_path,0777,true);
        }
        $qrname = $qr_file_name.'.png';
        //二维码导出的储存地址
        $outfile = $out_path.$qrname;
        //二维码的大小
        $size = $this->size;

        //调用方法成功后,会在相应文件夹下生成二维码文件
        \PHPQRCode\QRcode::png($str, $outfile, $size);

        //$QR调用png生成的二维码全路径
        $QR = Tools::get_root_path().'public/uploads/qr_images/'.$qrname;
        //$header头像全路径:头像一定是正方形
        $header = $logo;
        $QR = \PHPQRCode\QRcode::addHeader($header, $QR);

        return $outfile;
    }
    /**
     * 生成带logo的二维码
     * author：wh
     * doc: https://packagist.org/packages/doing/phpqrcode
     * @param string $str 二维码的内容
     * @param string $outfile 二维码导出的储存地址（完整物理绝对路径，需要带后缀）
     * @param string $logo 真实物理路径 必须
     * @throws \Exception
     */

    function createLogoQrcode(string $str,string $outfile, string $logo=''){
        //相对路径
        $reltive_path = $outfile;//供外部网络访问使用
        $root_path = Tools::get_root_path().'public/';


        $absolute_path = $root_path.$outfile;//绝对路径存储使用
        //创建目录
        if(!file_exists(dirname($absolute_path))){
            mkdir(dirname($absolute_path), 0777, true);
        }

        //二维码的大小
        $size = $this->size;

        //调用方法成功后,会在相应文件夹下生成二维码文件
        \PHPQRCode\QRcode::png($str, $absolute_path, $size);

        //$QR调用png生成的二维码全路径
        //$header头像全路径:头像一定是正方形
        if($logo){
            \PHPQRCode\QRcode::addHeader($logo, $absolute_path);
        }

        return '/'.$reltive_path;
    }

    /**
     * desc：生成不带logo的二维码
     *
     * author：wh
     * @param string $content 二维码的内容
     * @param string $qr_file_name 二维码图片文件名称(一般为用户唯一id)
     * @return string
     */
    function generateQrcode($content,$qr_file_name='')
    {
        if(empty($qr_file_name)){
            $qr_file_name = 'qrcode_'.time().rand(1000,9999);
        }
        $out_path = 'uploads/qr_images/';
        if(!file_exists($out_path)){
            mkdir($out_path,0777,true);
        }
        $qrname = $qr_file_name.'.png';
        //二维码导出的储存地址
        $outfile = $out_path.$qrname;
        //二维码的大小
        $size = $this->size;

        //调用方法成功后,会在相应文件夹下生成二维码文件
        \PHPQRCode\QRcode::png($content, $outfile, $size);
        return $outfile;
    }
}